package intopo.game.impl.ipd;

import intopo.game.Strategy;

/**
 * The base class that represents a player of the Iterated Prisoner's
 * Dilemma game. As in the Prisoner's Dilemma game, the actions available
 * in this game are cooperate or defect. Since there are only two actions,
 * the only method this class defines returns a boolean value that
 * indicates if the player is going to cooperate. Since this an iterated
 * game, this method has a parameter that contains the history of the game.

 * @see IteratedPrisonerDilemmaHistory

 * @author <a href="mailto:mariano.pedro@gmail.com">Pedro Lopes da Silva Mariano</a>

 * @version 1.0
 */
abstract public class IteratedPrisonerDilemmaStrategy
	implements Strategy<IteratedPrisonerDilemmaStrategy>
{
	abstract public boolean cooperate (IteratedPrisonerDilemmaHistory history, int index);
	
	abstract public IteratedPrisonerDilemmaStrategy clone ();
}
